home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / font / Font2D.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  6.3 KB  |  264 lines

  1. package sun.font;
  2.  
  3. import java.awt.Font;
  4. import java.awt.font.FontRenderContext;
  5. import java.awt.geom.AffineTransform;
  6. import java.lang.ref.Reference;
  7. import java.lang.ref.SoftReference;
  8. import java.util.HashMap;
  9. import java.util.Locale;
  10.  
  11. public abstract class Font2D {
  12.    public static final int FONT_CONFIG_RANK = 2;
  13.    public static final int JRE_RANK = 2;
  14.    public static final int TTF_RANK = 3;
  15.    public static final int TYPE1_RANK = 4;
  16.    public static final int NATIVE_RANK = 5;
  17.    public static final int UNKNOWN_RANK = 6;
  18.    public static final int DEFAULT_RANK = 4;
  19.    private static final String[] boldNames = new String[]{"bold", "demibold", "demi-bold", "demi bold", "negreta", "demi"};
  20.    private static final String[] italicNames = new String[]{"italic", "cursiva", "oblique", "inclined"};
  21.    private static final String[] boldItalicNames = new String[]{"bolditalic", "bold-italic", "bold italic", "boldoblique", "bold-oblique", "bold oblique", "demibold italic", "negreta cursiva", "demi oblique"};
  22.    private static final FontRenderContext DEFAULT_FRC = new FontRenderContext((AffineTransform)null, false, false);
  23.    public Font2DHandle handle;
  24.    protected String familyName;
  25.    protected String fullName;
  26.    protected int style = 0;
  27.    protected FontFamily family;
  28.    protected int fontRank = 4;
  29.    protected CharToGlyphMapper mapper;
  30.    protected HashMap strikeCache = new HashMap();
  31.    protected Reference lastFontStrike = new SoftReference((Object)null);
  32.  
  33.    public int getStyle() {
  34.       return this.style;
  35.    }
  36.  
  37.    protected void setStyle() {
  38.       String var1 = this.fullName.toLowerCase();
  39.  
  40.       for(int var2 = 0; var2 < boldItalicNames.length; ++var2) {
  41.          if (var1.indexOf(boldItalicNames[var2]) != -1) {
  42.             this.style = 3;
  43.             return;
  44.          }
  45.       }
  46.  
  47.       for(int var3 = 0; var3 < italicNames.length; ++var3) {
  48.          if (var1.indexOf(italicNames[var3]) != -1) {
  49.             this.style = 2;
  50.             return;
  51.          }
  52.       }
  53.  
  54.       for(int var4 = 0; var4 < boldNames.length; ++var4) {
  55.          if (var1.indexOf(boldNames[var4]) != -1) {
  56.             this.style = 1;
  57.             return;
  58.          }
  59.       }
  60.  
  61.    }
  62.  
  63.    int getRank() {
  64.       return this.fontRank;
  65.    }
  66.  
  67.    void setRank(int var1) {
  68.       this.fontRank = var1;
  69.    }
  70.  
  71.    abstract CharToGlyphMapper getMapper();
  72.  
  73.    protected int getValidatedGlyphCode(int var1) {
  74.       if (var1 < 0 || var1 >= this.getMapper().getNumGlyphs()) {
  75.          var1 = this.getMapper().getMissingGlyphCode();
  76.       }
  77.  
  78.       return var1;
  79.    }
  80.  
  81.    abstract FontStrike createStrike(FontStrikeDesc var1);
  82.  
  83.    public FontStrike getStrike(Font var1) {
  84.       FontStrike var2 = (FontStrike)this.lastFontStrike.get();
  85.       return var2 != null ? var2 : this.getStrike(var1, DEFAULT_FRC);
  86.    }
  87.  
  88.    public FontStrike getStrike(Font var1, AffineTransform var2, int var3, int var4) {
  89.       double var5 = (double)var1.getSize2D();
  90.       AffineTransform var7 = (AffineTransform)var2.clone();
  91.       var7.scale(var5, var5);
  92.       if (var1.isTransformed()) {
  93.          var7.concatenate(var1.getTransform());
  94.       }
  95.  
  96.       FontStrikeDesc var8 = new FontStrikeDesc(var2, var7, var1.getStyle(), var3, var4);
  97.       return this.getStrike(var8, false);
  98.    }
  99.  
  100.    public FontStrike getStrike(Font var1, AffineTransform var2, AffineTransform var3, int var4, int var5) {
  101.       FontStrikeDesc var6 = new FontStrikeDesc(var2, var3, var1.getStyle(), var4, var5);
  102.       return this.getStrike(var6, false);
  103.    }
  104.  
  105.    public FontStrike getStrike(Font var1, FontRenderContext var2) {
  106.       AffineTransform var3 = var2.getTransform();
  107.       double var4 = (double)var1.getSize2D();
  108.       var3.scale(var4, var4);
  109.       if (var1.isTransformed()) {
  110.          var3.concatenate(var1.getTransform());
  111.       }
  112.  
  113.       int var6 = FontStrikeDesc.getAAHintIntVal(this, var1, var2);
  114.       int var7 = FontStrikeDesc.getFMHintIntVal(var2.getFractionalMetricsHint());
  115.       FontStrikeDesc var8 = new FontStrikeDesc(var2.getTransform(), var3, var1.getStyle(), var6, var7);
  116.       return this.getStrike(var8, false);
  117.    }
  118.  
  119.    FontStrike getStrike(FontStrikeDesc var1) {
  120.       return this.getStrike(var1, true);
  121.    }
  122.  
  123.    private FontStrike getStrike(FontStrikeDesc var1, boolean var2) {
  124.       FontStrike var3 = (FontStrike)this.lastFontStrike.get();
  125.       if (var3 != null && var1.equals(var3.desc)) {
  126.          return var3;
  127.       } else {
  128.          Reference var4;
  129.          synchronized(this.strikeCache) {
  130.             var4 = (Reference)this.strikeCache.get(var1);
  131.          }
  132.  
  133.          if (var4 != null) {
  134.             var3 = (FontStrike)var4.get();
  135.             if (var3 != null) {
  136.                this.lastFontStrike = new SoftReference(var3);
  137.                StrikeCache.refStrike(var3);
  138.                return var3;
  139.             }
  140.  
  141.             ((StrikeCache.DisposableStrike)var4).getDisposer().dispose();
  142.          }
  143.  
  144.          if (var2) {
  145.             var1 = new FontStrikeDesc(var1);
  146.          }
  147.  
  148.          var3 = this.createStrike(var1);
  149.          var4 = StrikeCache.getStrikeRef(var3);
  150.          synchronized(this.strikeCache) {
  151.             this.strikeCache.put(var1, var4);
  152.          }
  153.  
  154.          this.lastFontStrike = new SoftReference(var3);
  155.          StrikeCache.refStrike(var3);
  156.          return var3;
  157.       }
  158.    }
  159.  
  160.    void removeFromCache(FontStrikeDesc var1) {
  161.       synchronized(this.strikeCache) {
  162.          Reference var3 = (Reference)this.strikeCache.get(var1);
  163.          if (var3 != null) {
  164.             Object var4 = var3.get();
  165.             if (var4 == null) {
  166.                this.strikeCache.remove(var1);
  167.             }
  168.          }
  169.  
  170.       }
  171.    }
  172.  
  173.    public void getFontMetrics(Font var1, AffineTransform var2, Object var3, Object var4, float[] var5) {
  174.       int var6 = FontStrikeDesc.getAAHintIntVal(var3, this, var1.getSize());
  175.       int var7 = FontStrikeDesc.getFMHintIntVal(var4);
  176.       FontStrike var8 = this.getStrike(var1, var2, var6, var7);
  177.       StrikeMetrics var9 = var8.getFontMetrics();
  178.       var5[0] = var9.getAscent();
  179.       var5[1] = var9.getDescent();
  180.       var5[2] = var9.getLeading();
  181.       var5[3] = var9.getMaxAdvance();
  182.       this.getStyleMetrics(var1.getSize2D(), var5, 4);
  183.    }
  184.  
  185.    public void getStyleMetrics(float var1, float[] var2, int var3) {
  186.       var2[var3] = -var2[0] / 2.5F;
  187.       var2[var3 + 1] = var1 / 12.0F;
  188.       var2[var3 + 2] = var2[var3 + 1] / 1.5F;
  189.       var2[var3 + 3] = var2[var3 + 1];
  190.    }
  191.  
  192.    public void getFontMetrics(Font var1, FontRenderContext var2, float[] var3) {
  193.       StrikeMetrics var4 = this.getStrike(var1, var2).getFontMetrics();
  194.       var3[0] = var4.getAscent();
  195.       var3[1] = var4.getDescent();
  196.       var3[2] = var4.getLeading();
  197.       var3[3] = var4.getMaxAdvance();
  198.    }
  199.  
  200.    byte[] getTableBytes(int var1) {
  201.       return null;
  202.    }
  203.  
  204.    boolean supportsEncoding(String var1) {
  205.       return false;
  206.    }
  207.  
  208.    public boolean canDoStyle(int var1) {
  209.       return var1 == this.style;
  210.    }
  211.  
  212.    public boolean useAAForPtSize(int var1) {
  213.       return true;
  214.    }
  215.  
  216.    public boolean hasSupplementaryChars() {
  217.       return false;
  218.    }
  219.  
  220.    public String getPostscriptName() {
  221.       return this.fullName;
  222.    }
  223.  
  224.    public String getFontName(Locale var1) {
  225.       return this.fullName;
  226.    }
  227.  
  228.    public String getFamilyName(Locale var1) {
  229.       return this.familyName;
  230.    }
  231.  
  232.    public int getNumGlyphs() {
  233.       return this.getMapper().getNumGlyphs();
  234.    }
  235.  
  236.    public int charToGlyph(int var1) {
  237.       return this.getMapper().charToGlyph(var1);
  238.    }
  239.  
  240.    public int getMissingGlyphCode() {
  241.       return this.getMapper().getMissingGlyphCode();
  242.    }
  243.  
  244.    public boolean canDisplay(char var1) {
  245.       return this.getMapper().canDisplay(var1);
  246.    }
  247.  
  248.    public boolean canDisplay(int var1) {
  249.       return this.getMapper().canDisplay(var1);
  250.    }
  251.  
  252.    public byte getBaselineFor(char var1) {
  253.       return 0;
  254.    }
  255.  
  256.    public float getItalicAngle(Font var1, AffineTransform var2, Object var3, Object var4) {
  257.       int var5 = FontStrikeDesc.getAAHintIntVal(var3, this, 12);
  258.       int var6 = FontStrikeDesc.getFMHintIntVal(var4);
  259.       FontStrike var7 = this.getStrike(var1, var2, var5, var6);
  260.       StrikeMetrics var8 = var7.getFontMetrics();
  261.       return var8.ascentY != 0.0F && var8.ascentX != 0.0F ? var8.ascentX / -var8.ascentY : 0.0F;
  262.    }
  263. }
  264.